package com.ft.oa.domain.development;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ft.oa.web.development.DevNeedAnalyseController;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 研发-需求
 */
@Getter
@Setter
public class DevNeed {


    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 需求编号
     */
    private String needNo;
    /**
     * 需求类别 1 合同，2售前，3售后，4规划
     */
    private Integer category;

    /**
     * 售前负责人(用户id)
     */
    private Long preSalesId;
    /**
     * 售前负责人名称
     */
    private String preSalesName;

    /**
     * 项目状态
     */
    private String projectState;
    /**
     * 紧急程度
     */
    private String urgencyState;
    /**
     * 交付日期
     */
    private LocalDate deliveryDate;
    /**
     * 客户名称
     */
    private String customerName;
    /**
     * 客户Id
     */
    private Long customerId;
    /**
     * 客户对接人
     */
    private String customerRecepter;
    /**
     * 客户对接人联系方式
     */
    private String customPhone;

    /**
     * 规划-需求来源
     */
    private String ghNeed;
    /**
     * 规划-合同号
     */
    private String ghContractNo;
    /**
     * 售前参与人
     */
    @TableField(exist = false)
    private String preSalesParticipants;
    /*
    * 项目编号
    * */
    @TableField(exist = false)
    private String projectNumber;
    /**
     * 项目Id(立项通过)
     */
    private Long projectId;
    /**
     * 项目名称
     */
    private String projectName;
    /**
     * 项目经理
     */
    private String projectManage;
    /**
     * 项目进度
     */
    private String projectProgress;
    /**
     * 项目阶段
     */
    private String projectStage;

    /**
     * 需求描述
     */
    private String demandMsg;
    /**
     * 验收指标描述
     */
    private String checkTargetMsg;
    /**
     * 备注
     */
    private String remarks;


    //确认start


    /**
     * 驳回原因
     */
    private String rejectReason;
    /**
     * 关闭原因
     */
    private String closeReason;

    //确认end

    /**
     * 新增日期
     */
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     * 下发日期
     */
    @TableField(exist = false)
    private LocalDateTime issueTime;
    /**
     * 修改日期
     */
    private LocalDateTime updateTime;
    /**
     * 删除日期
     */
    private LocalDateTime delTime;
    /**
     * 数据状态, 0 待确认，1是删除， 2已确认， 3驳回， 4关闭, 5已下发, 6 已分配
     */
    private Integer dataState;

    /**
     * 是否创建研发需求
     */
    private Boolean devCreate;

    //下发start

    /**
     * 研发需求类别
     */
    @TableField(exist = false)
    private String devNeedCategory;
    /**
     * 产品类别id
     */
    @TableField(exist = false)
    private Long productCategoryId;
    /**
     * 产品类别
     */
    @TableField(exist = false)
    private String productCategory;
    /**
     * 产品版本
     */
    @TableField(exist = false)
    private String productVersion;
    /**
     * 分流方向
     */
    @TableField(exist = false)
    private String shuntDirection;
    /**
     * 研发模式
     */
    @TableField(exist = false)
    private String devModel;
    /**
     * 下发版本号
     */
    @TableField(exist = false)
    private String issueVersion;

    /**
     * 下发备注
     */
    @TableField(exist = false)
    private String issueRemarks;

    //下发end

    /**
     * 需求阶段
     */
    private String needStage;
    /**
     * 项目优先级
     */
    private String projectPriority;

    /**
     * 是否已确认需求 0：否 1：是
     */
    private String isAnalyse;
    /**
     * 需求合同
     */
    @TableField(exist = false)
    private List<NeedContract> needContractList;
    /**
     * 页数
     */
    @TableField(exist = false)
    private int page;
    /**
     * 每页条数
     */
    @TableField(exist = false)
    private int size;

    /**
     * 交付日期条件查询左界
     */
    @TableField(exist = false)
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
    private LocalDate deliveryDateLeft;
    /**
     * 交付日期条件查询右界
     */
    @TableField(exist = false)
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
    private LocalDate deliveryDateRight;

    /**
     * 研发信息
     */
    @TableField(exist = false)
    private List<DevNeedInfo> infos;
    /**
     * 需求分析
     */
    @TableField(exist = false)
    private List<NeedAnalyse> analyses;
    /**
     * 整合-需求id列表
     */
    @TableField(exist = false)
    private List<Long> issueNeedList;
    /**
     * 下发信息
     */
    @TableField(exist = false)
    private DevNeedIssue issue;


    /**
     * 下发表主键
     */
    private Long issueId;
    /**
     * 需求分析负责人id
     */
    private int chargePersonId;
    /**
     * 需求分析负责人name
     */
    private String chargePersonName;
    /**
     * 确认时间
     */
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime confirmTime;
}
